library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ───────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ──────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
library(tidyverse)
library(shiny)
library(ggplot2)
library(CodeClanData)

Attaching package: ‘CodeClanData’

The following object is masked from ‘package:dplyr’:

    starwars

The following object is masked from ‘package:tidyr’:

    population
library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
game_sales %>% 
  mutate(year_of_release = as.factor(year_of_release)) %>% 
  arrange(year_of_release)
sales_genre <- game_sales %>% 
  group_by(genre, year_of_release) %>% 
  summarise(sales = round(mean(sales), 2), .groups = "keep") %>% 
  mutate(year_of_release = as.factor(year_of_release)) %>% 
  arrange(year_of_release) %>% 
  filter(year_of_release == "2012") %>% 
  ggplot(aes(x = genre,
             y = sales,
             fill = "coral"))+
  geom_col()+
  coord_flip()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        legend.position = "none")+
  labs(x = "Genre",
       y = "Sales (£m)")
ggplotly(sales_genre)
score_genre <- game_sales %>% 
  group_by(genre, year_of_release) %>% 
  summarise(user_score = round(mean(user_score), 2), .groups = "keep") %>% 
  mutate(year_of_release = as.factor(year_of_release)) %>% 
  arrange(year_of_release) %>% 
  filter(year_of_release == "2012") %>% 
  ggplot(aes(x = genre,
             y = user_score,
             fill = "coral"))+
  geom_col()+
  coord_flip()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        legend.position = "none")+
  labs(x = "Genre",
       y = "User Score")
ggplotly(score_genre)
year_vs_sales <- game_sales %>% 
  group_by(genre, year_of_release) %>% 
  summarise(sales = round(mean(sales), 2), .groups = "keep") %>% 
  filter(genre == "Action") %>% 
ggplot(aes(x = year_of_release,
             y = sales,
             colour = genre))+
  geom_line(show.legend = F)+
  geom_point()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank())+
  labs(x = "Release Year",
       y = "Sales (£m)")
ggplotly(year_vs_sales)
year_vs_score <- game_sales %>% 
  group_by(genre, year_of_release) %>% 
  summarise(user_score = round(mean(user_score), 2), .groups = "keep") %>% 
  filter(genre == "Action") %>% 
  ggplot(aes(x = year_of_release,
             y = user_score,
             colour = genre))+
  geom_line(show.legend = F)+
  geom_point()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank())+
  labs(x = "Release Year",
       y = "User Score")
ggplotly(year_vs_score)
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShDb2RlQ2xhbkRhdGEpCmxpYnJhcnkocGxvdGx5KQoKYGBgCmBgYHtyfQpnYW1lX3NhbGVzICU+JSAKICBtdXRhdGUoeWVhcl9vZl9yZWxlYXNlID0gYXMuZmFjdG9yKHllYXJfb2ZfcmVsZWFzZSkpICU+JSAKICBhcnJhbmdlKHllYXJfb2ZfcmVsZWFzZSkKYGBgCgoKCmBgYHtyfQpzYWxlc19nZW5yZSA8LSBnYW1lX3NhbGVzICU+JSAKICBncm91cF9ieShnZW5yZSwgeWVhcl9vZl9yZWxlYXNlKSAlPiUgCiAgc3VtbWFyaXNlKHNhbGVzID0gcm91bmQobWVhbihzYWxlcyksIDIpLCAuZ3JvdXBzID0gImtlZXAiKSAlPiUgCiAgbXV0YXRlKHllYXJfb2ZfcmVsZWFzZSA9IGFzLmZhY3Rvcih5ZWFyX29mX3JlbGVhc2UpKSAlPiUgCiAgYXJyYW5nZSh5ZWFyX29mX3JlbGVhc2UpICU+JSAKICBmaWx0ZXIoeWVhcl9vZl9yZWxlYXNlID09ICIyMDEyIikgJT4lIAogIGdncGxvdChhZXMoeCA9IGdlbnJlLAogICAgICAgICAgICAgeSA9IHNhbGVzLAogICAgICAgICAgICAgZmlsbCA9ICJjb3JhbCIpKSsKICBnZW9tX2NvbCgpKwogIGNvb3JkX2ZsaXAoKSsKICB0aGVtZShwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSsKICBsYWJzKHggPSAiR2VucmUiLAogICAgICAgeSA9ICJTYWxlcyAowqNtKSIpCmBgYApgYGB7cn0KZ2dwbG90bHkoc2FsZXNfZ2VucmUpCmBgYAoKYGBge3J9CnNjb3JlX2dlbnJlIDwtIGdhbWVfc2FsZXMgJT4lIAogIGdyb3VwX2J5KGdlbnJlLCB5ZWFyX29mX3JlbGVhc2UpICU+JSAKICBzdW1tYXJpc2UodXNlcl9zY29yZSA9IHJvdW5kKG1lYW4odXNlcl9zY29yZSksIDIpLCAuZ3JvdXBzID0gImtlZXAiKSAlPiUgCiAgbXV0YXRlKHllYXJfb2ZfcmVsZWFzZSA9IGFzLmZhY3Rvcih5ZWFyX29mX3JlbGVhc2UpKSAlPiUgCiAgYXJyYW5nZSh5ZWFyX29mX3JlbGVhc2UpICU+JSAKICBmaWx0ZXIoeWVhcl9vZl9yZWxlYXNlID09ICIyMDEyIikgJT4lIAogIGdncGxvdChhZXMoeCA9IGdlbnJlLAogICAgICAgICAgICAgeSA9IHVzZXJfc2NvcmUsCiAgICAgICAgICAgICBmaWxsID0gImNvcmFsIikpKwogIGdlb21fY29sKCkrCiAgY29vcmRfZmxpcCgpKwogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKwogIGxhYnMoeCA9ICJHZW5yZSIsCiAgICAgICB5ID0gIlVzZXIgU2NvcmUiKQpgYGAKYGBge3J9CmdncGxvdGx5KHNjb3JlX2dlbnJlKQpgYGAKCgpgYGB7cn0KeWVhcl92c19zYWxlcyA8LSBnYW1lX3NhbGVzICU+JSAKICBncm91cF9ieShnZW5yZSwgeWVhcl9vZl9yZWxlYXNlKSAlPiUgCiAgc3VtbWFyaXNlKHNhbGVzID0gcm91bmQobWVhbihzYWxlcyksIDIpLCAuZ3JvdXBzID0gImtlZXAiKSAlPiUgCiAgZmlsdGVyKGdlbnJlID09ICJBY3Rpb24iKSAlPiUgCmdncGxvdChhZXMoeCA9IHllYXJfb2ZfcmVsZWFzZSwKICAgICAgICAgICAgIHkgPSBzYWxlcywKICAgICAgICAgICAgIGNvbG91ciA9IGdlbnJlKSkrCiAgZ2VvbV9saW5lKHNob3cubGVnZW5kID0gRikrCiAgZ2VvbV9wb2ludCgpKwogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSkrCiAgbGFicyh4ID0gIlJlbGVhc2UgWWVhciIsCiAgICAgICB5ID0gIlNhbGVzICjCo20pIikKYGBgCmBgYHtyfQpnZ3Bsb3RseSh5ZWFyX3ZzX3NhbGVzKQpgYGAKCgpgYGB7cn0KeWVhcl92c19zY29yZSA8LSBnYW1lX3NhbGVzICU+JSAKICBncm91cF9ieShnZW5yZSwgeWVhcl9vZl9yZWxlYXNlKSAlPiUgCiAgc3VtbWFyaXNlKHVzZXJfc2NvcmUgPSByb3VuZChtZWFuKHVzZXJfc2NvcmUpLCAyKSwgLmdyb3VwcyA9ICJrZWVwIikgJT4lIAogIGZpbHRlcihnZW5yZSA9PSAiQWN0aW9uIikgJT4lIAogIGdncGxvdChhZXMoeCA9IHllYXJfb2ZfcmVsZWFzZSwKICAgICAgICAgICAgIHkgPSB1c2VyX3Njb3JlLAogICAgICAgICAgICAgY29sb3VyID0gZ2VucmUpKSsKICBnZW9tX2xpbmUoc2hvdy5sZWdlbmQgPSBGKSsKICBnZW9tX3BvaW50KCkrCiAgdGhlbWUocGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpKSsKICBsYWJzKHggPSAiUmVsZWFzZSBZZWFyIiwKICAgICAgIHkgPSAiVXNlciBTY29yZSIpCmBgYApgYGB7cn0KZ2dwbG90bHkoeWVhcl92c19zY29yZSkKYGBgCgo=